import type { Method } from 'axios';
import http from './http';

/**
 * @function 发起HTTP请求
 * @description 功能同simpleRequest，使用TS导出以支持泛型
 * @param url 接口地址
 * @param method 请求类型
 * @param data 请求参数
 */
export function request<T>(url: string, method: Method = 'get', data = {}): () => Promise<T> {
    return () => {
        return new Promise<T>((resolve, reject) => {
            http.request({
                url,
                method,
                params: method === 'get' ? data : {},
                data: method === 'post' ? data : {},
            })
                .then((res) => {
                    resolve(res?.data || res);
                })
                .catch((err) => {
                    reject(err);
                });
        });
    };
}

export default request;
